BanniΦre dΘcorative

Exemple de serveur de discussion


    L'exemple de code suivant met en oeuvre un serveur de discussion très simple. Un client de discussion peut se connecter au serveur de discussion, lequel écoute sur le numéro de port 1234. Le serveur répond par un message de bienvenue et attend une ligne d'entrée du client. Le client entre du texte et le transmet au serveur qui affiche le texte et laisse l'utilisateur sur l'ordinateur serveur entrer une ligne de texte, que l'ordinateur client affiche. Ces allers-retours se poursuivent jusqu'à ce que le serveur ou l'ordinateur client entre le texte "au revoir".

    function chatServer() {
        var tcp = new Socket;
        // écoute sur le port 1234
        writeln ("Serveur de discussion écoutant sur le port 1234");
        if (tcp.listen (1234)) {
            for (;;) {
                // vérifie la présence d'une nouvelle connexion
                var connection = tcp.poll();
                if (connection != null) {
                    writeln ("Connexion de " + connection.host);
                    // une nouvelle connexion est présente, affiche le message de bienvenue et discute
                    // jusqu'à ce que le client mette fin à la session
                    connection.writeln ("Bienvenue à un petit bavardage !");
                    chat (connection);
                    connection.writeln ("*** Au revoir ***");
                    connection.close();
                    delete connection;
                    writeln ("Connexion terminée");
                }
            }
        }
    }
    function chatClient() {
        var connection = new Socket;
        // se connecte au serveur exemple
        if (connection.open ("remote-pc.corp.adobe.com:1234")) {
            // puis, discute avec le serveur
            chat (connection);
            connection.close();
            delete connection;
        }
    }
    function chat (c) {
        // sélectionne un long dépassement de délai
        c.timeout=1000;
        while (true) {
            // obtient une ligne et la reproduit
            writeln (c.read());
            // arrête si la connexion est interrompue
            if (!c.connected)
                break;
            // lit une ligne de texte
            write ("chat : ");
            var text = readln();
            if (text == "au revoir")
                // arrête la conversation si l'utilisateur a entré "au revoir"
                break;
            else
                // sinon, transmet au serveur
                c.writeln (text);
        }
    }